#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "scriptPrepare.h"
#include "fontsetting.h"
#include "desktopfilefix.h"
#include "cursorfix.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    FontSetting *fs = new FontSetting();
    if(fs->isFcitx()) {
        ui->fsShow->addWidget(fs);
    }
    else {
        ui->tabWidget->removeTab(1);
        fs->destroyed();
    }

    desktopfilefix *df = new desktopfilefix();
    cursorFix *cf = new cursorFix();

    ui->dfShow->addWidget(df);
    ui->cfShow->addWidget(cf);

    ui->tabWidget->setCurrentIndex(0);

    QLabel *buildtime = new QLabel("就绪");
    QLabel *copyright = new QLabel("©飞蚊话");
    QStatusBar *sBar = this->statusBar();
    sBar->addWidget(buildtime);
    sBar->addPermanentWidget(copyright);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_xeyeButton_clicked()
{
    ui->textBrowser->setText("<h2>现在出现了一双大眼睛。</h2>现在把鼠标移动到你想查看的应用程序上。<br>- 眼睛看向指针了，那么说明程序的显示服务是X<br>- 眼睛没有反应，那么说明程序使用的显示服务是Wayland.<br>右键大眼睛的图标以关闭程序。");
    system("xeyes &");
}


void MainWindow::on_dbusKdeButton_clicked()
{
    ui->textBrowser->setText("<h2>这个方法仅Debian12 KDE测试通过</h2>正常情况，你会看到打开了一个窗口程序。<br>然后你可以直接查看已经打开的程序都在使用哪些显示服务了。");
    QString dbus = bashResult(QStringList() << "-c" << "ls /usr/bin | grep qdbus");
    QStringList dbusresult = dbus.split("\n");
    qDebug() << dbusresult;
    if(dbusresult.contains("qdbus"))
    {
        system("qdbus org.kde.KWin /KWin org.kde.KWin.showDebugConsole");
    }
    else if(dbusresult.contains("qdbus-qt5"))
    {
        system("qdbus-qt5 org.kde.KWin /KWin org.kde.KWin.showDebugConsole");
    }
    else if(dbusresult.contains("qdbus6"))
    {
        system("qdbus6 org.kde.KWin /KWin org.kde.KWin.showDebugConsole");
    }
    else
    {
        ui->textBrowser->setText("<h2>没有找到命令</h2>这是正常情况，也许只有QT桌面环境可以使用。<br>而且，不同发行版有着不同的启动命令，暂时无法覆盖完全。<br>目前，使用KDE桌面的Debian12、openSUSE应该是正常的");
    }
}


void MainWindow::on_loginctlButton_clicked()
{
    ui->textBrowser->setText("<h2>执行结果</h2>" + bashResult(QStringList() << "-c" << "loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type"));
}


void MainWindow::on_XDGButton_clicked()
{
    ui->textBrowser->setText("<h2>执行结果</h2>" + bashResult(QStringList() << "-c" << "echo $XDG_SESSION_TYPE"));
}


void MainWindow::on_xlsclientsBtn_clicked()
{
    ui->textBrowser->setText("<h2>所列进程为使用X的进程</h2>" + bashResult(QStringList() << "-c" << "xlsclients"));

}


void MainWindow::on_tabWidget_currentChanged(int index)
{
    this->setWindowTitle("显示服务查看工具 - " + ui->tabWidget->tabText(index));
}

